home *** CD-ROM | disk | FTP | other *** search
- #ifndef __STOPWATCH_H
- #define __STOPWATCH_H
- #include "nscore.h"
- #include "prlog.h"
- #include "nsDeque.h"
-
- #ifdef XP_MAC
- #define R__MAC
- #endif
-
- #ifdef XP_UNIX
- #define R__UNIX
- #endif
-
- #ifdef MOZ_PERF_METRICS
- # define NS_RESET_AND_START_STOPWATCH(_sw) \
- _sw.Start(PR_TRUE);
-
- # define NS_START_STOPWATCH(_sw) \
- _sw.Start(PR_FALSE);
-
- # define NS_STOP_STOPWATCH(_sw) \
- _sw.Stop();
-
- # define NS_SAVE_STOPWATCH_STATE(_sw) \
- _sw.SaveState();
-
- # define NS_RESTORE_STOPWATCH_STATE(_sw) \
- _sw.RestoreState();
-
- #else
- # define NS_RESET_AND_START_STOPWATCH(_sw)
- # define NS_START_STOPWATCH(_sw)
- # define NS_STOP_STOPWATCH(_sw)
- # define NS_SAVE_STOPWATCH_STATE(_sw)
- # define NS_RESTORE_STOPWATCH_STATE(_sw)
- #endif
-
-
- #ifdef MOZ_PERF_METRICS
-
- static PRLogModuleInfo* gLogStopwatchModule = PR_NewLogModule("timing");
-
- #if 0
- #define RAPTOR_TRACE_STOPWATCHES 0x1
-
- #define RAPTOR_STOPWATCH_TRACE(_args) \
- PR_BEGIN_MACRO \
- PR_LOG(gLogStopwatchModule, RAPTOR_TRACE_STOPWATCHES, _args); \
- PR_END_MACRO
- #endif
-
- #define RAPTOR_STOPWATCH_TRACE(_args) \
- PR_BEGIN_MACRO \
- printf _args ; \
- PR_END_MACRO
-
- #else
- #define RAPTOR_TRACE_STOPWATCHES
- #define RAPTOR_STOPWATCH_TRACE(_args)
- #endif
-
- #ifdef DEBUG_STOPWATCH
- #define RAPTOR_STOPWATCH_DEBUGTRACE(_args) \
- PR_BEGIN_MACRO \
- printf _args ; \
- PR_END_MACRO
- #else
- #define RAPTOR_STOPWATCH_DEBUGTRACE(_args)
- #endif
-
- class Stopwatch {
-
- private:
- enum EState { kUndefined, kStopped, kRunning };
-
- double fStartRealTime; //wall clock start time
- double fStopRealTime; //wall clock stop time
- double fStartCpuTime; //cpu start time
- double fStopCpuTime; //cpu stop time
- double fTotalCpuTime; //total cpu time
- double fTotalRealTime; //total real time
- EState fState; //stopwatch state
- nsDeque* mSavedStates; //stack of saved states
- PRBool mCreatedStack; //Initially false. Set to true in first SaveState() call.
-
- public:
- Stopwatch();
- virtual ~Stopwatch();
-
- void Start(PRBool reset = PR_TRUE);
- void Stop();
- void Continue();
- void SaveState(); // record current state of stopwatch
- void RestoreState(); // restore last recored state of stopwatch
- double RealTime();
- double RealTimeInMilliseconds();
- void Reset() { ResetCpuTime(); ResetRealTime(); }
- void ResetCpuTime(double aTime = 0) { Stop(); fTotalCpuTime = aTime; }
- void ResetRealTime(double aTime = 0) { Stop(); fTotalRealTime = aTime; }
- double CpuTime();
- void Print(void);
- static double GetRealTime();
- static double GetCPUTime();
-
- };
- #endif
-